﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Cotizav.LogicaNegocio
{
    public class MarcaBLL
    {
        public List<Entidades.Marca> Listar()
        {
            AccesoDatos.MarcaDAO marcaDAO = new AccesoDatos.MarcaDAO();

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                return marcaDAO.Listar(ctx);
            }
        }

        public int Guardar(Entidades.Marca newMarca)
        {
            if (string.IsNullOrWhiteSpace(newMarca.Prefijo))
            {
                throw new ApplicationException("El prefijo se encuentra vacío");
            }

            if (string.IsNullOrWhiteSpace(newMarca.NombreMarca))
            {
                throw new ApplicationException("El nombre de la marca se encuentra vacío");
            }

            AccesoDatos.MarcaDAO marcaDAO = new AccesoDatos.MarcaDAO();
            int resultado = 0;

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                resultado = marcaDAO.Registrar(ctx, newMarca);
            }

            return resultado;

        }

        public int Actualizar(Entidades.Marca updMarca)
        {
            if (string.IsNullOrWhiteSpace(updMarca.Prefijo))
            {
                throw new ApplicationException("El prefijo se encuentra vacío");
            }

            if (string.IsNullOrWhiteSpace(updMarca.NombreMarca))
            {
                throw new ApplicationException("El nombre de la marca se encuentra vacío");
            }

            AccesoDatos.MarcaDAO marcaDAO = new AccesoDatos.MarcaDAO();
            int resultado = 0;

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                resultado = marcaDAO.Actualizar(ctx, updMarca);
            }

            return resultado;
        }

        public int Eliminar(Entidades.Marca selMarca)
        {
            int resultado = 0;
            AccesoDatos.MarcaDAO marcaDAO = new AccesoDatos.MarcaDAO();

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                resultado = marcaDAO.Eliminar(ctx, selMarca);
            }

            return resultado;
        }
    }
}
